package com.dmall.sort.algorithm;

/**
 * 排序接口
 * @author xiao1.wang
 * @date 2021/10/7 20:13
 */
public interface Sort {
    /**
     * 对整型数组进行升序排序
     * @param arr 待排序数组
     */
    void sort(int[] arr);

    /**
     * 排序算法名称
     * @return 排序算法名称
     */
    String getName();

    /**
     * 默认方法，用于交换数组的两个元素
     * @param arr 数组
     * @param x 索引x
     * @param y 索引y
     */
    default void swap(int[] arr, int x, int y) {
        int temp = arr[x];
        arr[x] = arr[y];
        arr[y] = temp;
    }

    /**
     * 用于简单的打印数组元素
     * @param arr 待打印数组
     */
    static void printArr(int[] arr) {
        if (arr == null) {
            return;
        }
        if (arr.length <= 0) {
            System.out.print("[]");
            return;
        }
        if (arr.length > 100) {
            throw new IllegalArgumentException("最大支持数组长度为100的数组打印");
        }
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if (i < arr.length - 1) {
                System.out.print(arr[i] + ", ");
            } else {
                System.out.print(arr[i] + "]");
            }
        }
        System.out.println();
    }
}
